package com.wk.warehouse.controller;

import com.wk.warehouse.entity.ProductCategory;
import com.wk.warehouse.entity.Result;
import com.wk.warehouse.service.ProductCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/productCategory")
public class ProductCategoryController {
	
	@Autowired
	private ProductCategoryService productCategoryService;

	/**
	 * 所有商品分类，树形结构
	 */
	@GetMapping("/product-category-tree")
	public Result productCategoryTree(){
		List<ProductCategory> productCategoryTree = productCategoryService.findTypeTree();
		return Result.ok(productCategoryTree);
	}

	/**
	 * 添加分类的typeCode唯一验证
	 */
	@GetMapping("/verify-type-code")
	public Result verifyTypeCode(String typeCode){
		ProductCategory productCategory = productCategoryService.queryByTypeCode(typeCode);
		return Result.ok(productCategory==null);
	}

	/**
	 * 添加分类信息
	 */
	@PostMapping("/type-add")
	public Result addType(@RequestBody ProductCategory type){
		// 验证分类编码的唯一性
		if(productCategoryService.queryByTypeCode(type.getTypeCode())!=null) return Result.err(Result.CODE_ERR_BUSINESS, "该分类编码已存在！");
		productCategoryService.saveType(type);
		return Result.ok("添加商品分类成功！");
	}

	/**
	 * 修改商品分类
	 */
	@PutMapping("/type-update")
	public Result updateType(@RequestBody ProductCategory type){
		productCategoryService.updateType(type);
		return Result.ok("修改商品分类成功！");
	}

	/**
	 * 删除商品分类 - 如果有子分类，则将子分类一起删除
	 */
	@DeleteMapping("/type-delete/{typeId}")
	public Result deleteType(@PathVariable int typeId){
		productCategoryService.deleteType(typeId);
		return Result.ok("删除商品分类成功！");
	}
}
